class ArchievesRoleEntity {
	ArchievesRoleCardinfo cardInfo;
	ArchievesRoleRoleinfo roleInfo;
	ArchievesRoleUserweaponbaseinfo userWeaponBaseInfo;

	ArchievesRoleEntity({this.cardInfo, this.roleInfo, this.userWeaponBaseInfo});

	ArchievesRoleEntity.fromJson(Map<String, dynamic> json) {
		cardInfo = json['cardInfo'] != null ? new ArchievesRoleCardinfo.fromJson(json['cardInfo']) : null;
		roleInfo = json['roleInfo'] != null ? new ArchievesRoleRoleinfo.fromJson(json['roleInfo']) : null;
		userWeaponBaseInfo = json['userWeaponBaseInfo'] != null ? new ArchievesRoleUserweaponbaseinfo.fromJson(json['userWeaponBaseInfo']) : null;
	}

	Map<String, dynamic> toJson() {
		final Map<String, dynamic> data = new Map<String, dynamic>();
		if (this.cardInfo != null) {
      data['cardInfo'] = this.cardInfo.toJson();
    }
		if (this.roleInfo != null) {
      data['roleInfo'] = this.roleInfo.toJson();
    }
		if (this.userWeaponBaseInfo != null) {
      data['userWeaponBaseInfo'] = this.userWeaponBaseInfo.toJson();
    }
		return data;
	}
}

class ArchievesRoleCardinfo {
	int maxLevel;
	int classesId;
	List<ArchievesRoleCardinfoHarvest> harvest;
	String cardId;
	String professionName;
	String name;
	String description;
	String updateTime;
	int id;
	String operatorName;
	int quality;

	ArchievesRoleCardinfo({this.maxLevel, this.classesId, this.harvest, this.cardId, this.professionName, this.name, this.description, this.updateTime, this.id, this.operatorName, this.quality});

	ArchievesRoleCardinfo.fromJson(Map<String, dynamic> json) {
		maxLevel = json['maxLevel'];
		classesId = json['classesId'];
		if (json['harvest'] != null) {
			harvest = new List<ArchievesRoleCardinfoHarvest>();(json['harvest'] as List).forEach((v) { harvest.add(new ArchievesRoleCardinfoHarvest.fromJson(v)); });
		}
		cardId = json['cardId'];
		professionName = json['professionName'];
		name = json['name'];
		description = json['description'];
		updateTime = json['updateTime'];
		id = json['id'];
		operatorName = json['operatorName'];
		quality = json['quality'];
	}

	Map<String, dynamic> toJson() {
		final Map<String, dynamic> data = new Map<String, dynamic>();
		data['maxLevel'] = this.maxLevel;
		data['classesId'] = this.classesId;
		if (this.harvest != null) {
      data['harvest'] =  this.harvest.map((v) => v.toJson()).toList();
    }
		data['cardId'] = this.cardId;
		data['professionName'] = this.professionName;
		data['name'] = this.name;
		data['description'] = this.description;
		data['updateTime'] = this.updateTime;
		data['id'] = this.id;
		data['operatorName'] = this.operatorName;
		data['quality'] = this.quality;
		return data;
	}
}

class ArchievesRoleCardinfoHarvest {
	String id;
	int type;
	int value;

	ArchievesRoleCardinfoHarvest({this.id, this.type, this.value});

	ArchievesRoleCardinfoHarvest.fromJson(Map<String, dynamic> json) {
		id = json['id'];
		type = json['type'];
		value = json['value'];
	}

	Map<String, dynamic> toJson() {
		final Map<String, dynamic> data = new Map<String, dynamic>();
		data['id'] = this.id;
		data['type'] = this.type;
		data['value'] = this.value;
		return data;
	}
}

class ArchievesRoleRoleinfo {
	ArchievesRoleRoleinfoCardlevel cardLevel;
	ArchievesRoleRoleinfoUpgradable upgradable;
	ArchievesRoleRoleinfoUpgradelevel upgradeLevel;
	List<ArchievesRoleRoleinfoProperty> property;
	List<ArchievesRoleRoleinfoGood> goods;
	int fightingCapacity;
	int upgradeFightingCapacity;

	ArchievesRoleRoleinfo({this.cardLevel, this.upgradable, this.upgradeLevel, this.property, this.goods, this.fightingCapacity, this.upgradeFightingCapacity});

	ArchievesRoleRoleinfo.fromJson(Map<String, dynamic> json) {
		cardLevel = json['cardLevel'] != null ? new ArchievesRoleRoleinfoCardlevel.fromJson(json['cardLevel']) : null;
		upgradable = json['upgradable'] != null ? new ArchievesRoleRoleinfoUpgradable.fromJson(json['upgradable']) : null;
		upgradeLevel = json['upgradeLevel'] != null ? new ArchievesRoleRoleinfoUpgradelevel.fromJson(json['upgradeLevel']) : null;
		if (json['property'] != null) {
			property = new List<ArchievesRoleRoleinfoProperty>();(json['property'] as List).forEach((v) { property.add(new ArchievesRoleRoleinfoProperty.fromJson(v)); });
		}
		if (json['goods'] != null) {
			goods = new List<ArchievesRoleRoleinfoGood>();(json['goods'] as List).forEach((v) { goods.add(new ArchievesRoleRoleinfoGood.fromJson(v)); });
		}
		fightingCapacity = json['fightingCapacity'];
		upgradeFightingCapacity = json['upgradeFightingCapacity'];
	}

	Map<String, dynamic> toJson() {
		final Map<String, dynamic> data = new Map<String, dynamic>();
		if (this.cardLevel != null) {
      data['cardLevel'] = this.cardLevel.toJson();
    }
		if (this.upgradable != null) {
      data['upgradable'] = this.upgradable.toJson();
    }
		if (this.upgradeLevel != null) {
      data['upgradeLevel'] = this.upgradeLevel.toJson();
    }
		if (this.property != null) {
      data['property'] =  this.property.map((v) => v.toJson()).toList();
    }
		if (this.goods != null) {
      data['goods'] =  this.goods.map((v) => v.toJson()).toList();
    }
		data['fightingCapacity'] = this.fightingCapacity;
		data['upgradeFightingCapacity'] = this.upgradeFightingCapacity;
		return data;
	}
}

class ArchievesRoleRoleinfoCardlevel {
	int res;
	int def;
	int level;
	List<ArchievesRoleRoleinfoCardlevelConsumable> consumables;
	String cardId;
	int hp;
	List<ArchievesRoleRoleinfoCardlevelPrerequisite> prerequisite;
	int atk;
	String updateTime;
	int id;

	ArchievesRoleRoleinfoCardlevel({this.res, this.def, this.level, this.consumables, this.cardId, this.hp, this.prerequisite, this.atk, this.updateTime, this.id});

	ArchievesRoleRoleinfoCardlevel.fromJson(Map<String, dynamic> json) {
		res = json['res'];
		def = json['def'];
		level = json['level'];
		if (json['consumables'] != null) {
			consumables = new List<ArchievesRoleRoleinfoCardlevelConsumable>();(json['consumables'] as List).forEach((v) { consumables.add(new ArchievesRoleRoleinfoCardlevelConsumable.fromJson(v)); });
		}
		cardId = json['cardId'];
		hp = json['hp'];
		if (json['prerequisite'] != null) {
			prerequisite = new List<ArchievesRoleRoleinfoCardlevelPrerequisite>();(json['prerequisite'] as List).forEach((v) { prerequisite.add(new ArchievesRoleRoleinfoCardlevelPrerequisite.fromJson(v)); });
		}
		atk = json['atk'];
		updateTime = json['updateTime'];
		id = json['id'];
	}

	Map<String, dynamic> toJson() {
		final Map<String, dynamic> data = new Map<String, dynamic>();
		data['res'] = this.res;
		data['def'] = this.def;
		data['level'] = this.level;
		if (this.consumables != null) {
      data['consumables'] =  this.consumables.map((v) => v.toJson()).toList();
    }
		data['cardId'] = this.cardId;
		data['hp'] = this.hp;
		if (this.prerequisite != null) {
      data['prerequisite'] =  this.prerequisite.map((v) => v.toJson()).toList();
    }
		data['atk'] = this.atk;
		data['updateTime'] = this.updateTime;
		data['id'] = this.id;
		return data;
	}
}

class ArchievesRoleRoleinfoCardlevelConsumable {
	String id;
	int type;
	int value;

	ArchievesRoleRoleinfoCardlevelConsumable({this.id, this.type, this.value});

	ArchievesRoleRoleinfoCardlevelConsumable.fromJson(Map<String, dynamic> json) {
		id = json['id'];
		type = json['type'];
		value = json['value'];
	}

	Map<String, dynamic> toJson() {
		final Map<String, dynamic> data = new Map<String, dynamic>();
		data['id'] = this.id;
		data['type'] = this.type;
		data['value'] = this.value;
		return data;
	}
}

class ArchievesRoleRoleinfoCardlevelPrerequisite {
	int level;
	String propertyId;

	ArchievesRoleRoleinfoCardlevelPrerequisite({this.level, this.propertyId});

	ArchievesRoleRoleinfoCardlevelPrerequisite.fromJson(Map<String, dynamic> json) {
		level = json['level'];
		propertyId = json['propertyId'];
	}

	Map<String, dynamic> toJson() {
		final Map<String, dynamic> data = new Map<String, dynamic>();
		data['level'] = this.level;
		data['propertyId'] = this.propertyId;
		return data;
	}
}

class ArchievesRoleRoleinfoUpgradable {
	bool maxLevel;
	bool roleProperty;
	bool junMoXiaoLevel;
	bool goods;
	bool coin;

	ArchievesRoleRoleinfoUpgradable({this.maxLevel, this.roleProperty, this.junMoXiaoLevel, this.goods, this.coin});

	ArchievesRoleRoleinfoUpgradable.fromJson(Map<String, dynamic> json) {
		maxLevel = json['maxLevel'];
		roleProperty = json['roleProperty'];
		junMoXiaoLevel = json['junMoXiaoLevel'];
		goods = json['goods'];
		coin = json['coin'];
	}

	Map<String, dynamic> toJson() {
		final Map<String, dynamic> data = new Map<String, dynamic>();
		data['maxLevel'] = this.maxLevel;
		data['roleProperty'] = this.roleProperty;
		data['junMoXiaoLevel'] = this.junMoXiaoLevel;
		data['goods'] = this.goods;
		data['coin'] = this.coin;
		return data;
	}
}

class ArchievesRoleRoleinfoUpgradelevel {
	int res;
	int def;
	int level;
	List<ArchievesRoleRoleinfoUpgradelevelConsumable> consumables;
	String cardId;
	int hp;
	List<ArchievesRoleRoleinfoUpgradelevelPrerequisite> prerequisite;
	int atk;
	String updateTime;
	int id;

	ArchievesRoleRoleinfoUpgradelevel({this.res, this.def, this.level, this.consumables, this.cardId, this.hp, this.prerequisite, this.atk, this.updateTime, this.id});

	ArchievesRoleRoleinfoUpgradelevel.fromJson(Map<String, dynamic> json) {
		res = json['res'];
		def = json['def'];
		level = json['level'];
		if (json['consumables'] != null) {
			consumables = new List<ArchievesRoleRoleinfoUpgradelevelConsumable>();(json['consumables'] as List).forEach((v) { consumables.add(new ArchievesRoleRoleinfoUpgradelevelConsumable.fromJson(v)); });
		}
		cardId = json['cardId'];
		hp = json['hp'];
		if (json['prerequisite'] != null) {
			prerequisite = new List<ArchievesRoleRoleinfoUpgradelevelPrerequisite>();(json['prerequisite'] as List).forEach((v) { prerequisite.add(new ArchievesRoleRoleinfoUpgradelevelPrerequisite.fromJson(v)); });
		}
		atk = json['atk'];
		updateTime = json['updateTime'];
		id = json['id'];
	}

	Map<String, dynamic> toJson() {
		final Map<String, dynamic> data = new Map<String, dynamic>();
		data['res'] = this.res;
		data['def'] = this.def;
		data['level'] = this.level;
		if (this.consumables != null) {
      data['consumables'] =  this.consumables.map((v) => v.toJson()).toList();
    }
		data['cardId'] = this.cardId;
		data['hp'] = this.hp;
		if (this.prerequisite != null) {
      data['prerequisite'] =  this.prerequisite.map((v) => v.toJson()).toList();
    }
		data['atk'] = this.atk;
		data['updateTime'] = this.updateTime;
		data['id'] = this.id;
		return data;
	}
}

class ArchievesRoleRoleinfoUpgradelevelConsumable {
	String id;
	int type;
	int value;

	ArchievesRoleRoleinfoUpgradelevelConsumable({this.id, this.type, this.value});

	ArchievesRoleRoleinfoUpgradelevelConsumable.fromJson(Map<String, dynamic> json) {
		id = json['id'];
		type = json['type'];
		value = json['value'];
	}

	Map<String, dynamic> toJson() {
		final Map<String, dynamic> data = new Map<String, dynamic>();
		data['id'] = this.id;
		data['type'] = this.type;
		data['value'] = this.value;
		return data;
	}
}

class ArchievesRoleRoleinfoUpgradelevelPrerequisite {
	int level;
	String propertyId;

	ArchievesRoleRoleinfoUpgradelevelPrerequisite({this.level, this.propertyId});

	ArchievesRoleRoleinfoUpgradelevelPrerequisite.fromJson(Map<String, dynamic> json) {
		level = json['level'];
		propertyId = json['propertyId'];
	}

	Map<String, dynamic> toJson() {
		final Map<String, dynamic> data = new Map<String, dynamic>();
		data['level'] = this.level;
		data['propertyId'] = this.propertyId;
		return data;
	}
}

class ArchievesRoleRoleinfoProperty {
	int userLevel;
	int level;
	String name;

	ArchievesRoleRoleinfoProperty({this.userLevel, this.level, this.name});

	ArchievesRoleRoleinfoProperty.fromJson(Map<String, dynamic> json) {
		userLevel = json['userLevel'];
		level = json['level'];
		name = json['name'];
	}

	Map<String, dynamic> toJson() {
		final Map<String, dynamic> data = new Map<String, dynamic>();
		data['userLevel'] = this.userLevel;
		data['level'] = this.level;
		data['name'] = this.name;
		return data;
	}
}

class ArchievesRoleRoleinfoGood {
	String picUrl;
	int userNum;
	String picUrlBig;
	String professionName;
	int num;
	String name;
	String id;
	int goodsType;
	int quality;

	ArchievesRoleRoleinfoGood({this.picUrl, this.userNum, this.picUrlBig, this.professionName, this.num, this.name, this.id, this.goodsType, this.quality});

	ArchievesRoleRoleinfoGood.fromJson(Map<String, dynamic> json) {
		picUrl = json['picUrl'];
		userNum = json['userNum'];
		picUrlBig = json['picUrlBig'];
		professionName = json['professionName'];
		num = json['num'];
		name = json['name'];
		id = json['id'];
		goodsType = json['goodsType'];
		quality = json['quality'];
	}

	Map<String, dynamic> toJson() {
		final Map<String, dynamic> data = new Map<String, dynamic>();
		data['picUrl'] = this.picUrl;
		data['userNum'] = this.userNum;
		data['picUrlBig'] = this.picUrlBig;
		data['professionName'] = this.professionName;
		data['num'] = this.num;
		data['name'] = this.name;
		data['id'] = this.id;
		data['goodsType'] = this.goodsType;
		data['quality'] = this.quality;
		return data;
	}
}

class ArchievesRoleUserweaponbaseinfo {
	int weaponLevel;
	int maxFormLevel;
	int formLevel;

	ArchievesRoleUserweaponbaseinfo({this.weaponLevel, this.maxFormLevel, this.formLevel});

	ArchievesRoleUserweaponbaseinfo.fromJson(Map<String, dynamic> json) {
		weaponLevel = json['weaponLevel'];
		maxFormLevel = json['maxFormLevel'];
		formLevel = json['formLevel'];
	}

	Map<String, dynamic> toJson() {
		final Map<String, dynamic> data = new Map<String, dynamic>();
		data['weaponLevel'] = this.weaponLevel;
		data['maxFormLevel'] = this.maxFormLevel;
		data['formLevel'] = this.formLevel;
		return data;
	}
}
